//! # 依赖注入配置管理
//! 
//! 本模块提供了依赖注入容器的配置管理功能。

use crate::di::models::*;
use std::collections::HashMap;

/// 依赖注入容器配置
#[derive(Debug, Clone)]
pub struct DIConfig {
    /// 是否启用循环依赖检测
    pub enable_circular_dependency_check: bool,
    /// 最大作用域数量
    pub max_scopes: usize,
    /// 组件创建超时时间（毫秒）
    pub component_creation_timeout_ms: u64,
    /// 自定义配置项
    pub custom_settings: HashMap<String, String>,
}

impl Default for DIConfig {
    fn default() -> Self {
        Self {
            enable_circular_dependency_check: true,
            max_scopes: 100,
            component_creation_timeout_ms: 5000,
            custom_settings: HashMap::new(),
        }
    }
}

impl DIConfig {
    /// 创建新的配置实例
    pub fn new() -> Self {
        Self::default()
    }
    
    /// 启用循环依赖检测
    pub fn with_circular_dependency_check(mut self, enable: bool) -> Self {
        self.enable_circular_dependency_check = enable;
        self
    }
    
    /// 设置最大作用域数量
    pub fn with_max_scopes(mut self, max_scopes: usize) -> Self {
        self.max_scopes = max_scopes;
        self
    }
    
    /// 设置组件创建超时时间
    pub fn with_creation_timeout(mut self, timeout_ms: u64) -> Self {
        self.component_creation_timeout_ms = timeout_ms;
        self
    }
    
    /// 添加自定义配置项
    pub fn with_custom_setting(mut self, key: String, value: String) -> Self {
        self.custom_settings.insert(key, value);
        self
    }
}